OBJ_DIR = obj
C_FLAGS = -Wall -Wextra -g
EXEC = shell

all: $(OBJ_DIR)/main.o $(OBJ_DIR)/parser.o $(OBJ_DIR)/util.o $(OBJ_DIR)/history.o $(OBJ_DIR)/process.o $(OBJ_DIR)/autoComplete.o $(OBJ_DIR)/termInput.o
	gcc -o $(EXEC) $(OBJ_DIR)/main.o $(OBJ_DIR)/parser.o $(OBJ_DIR)/util.o $(OBJ_DIR)/history.o $(OBJ_DIR)/process.o $(OBJ_DIR)/autoComplete.o $(OBJ_DIR)/termInput.o
$(OBJ_DIR)/main.o: main.c util.h parser.h history.h
	gcc -c main.c -o $(OBJ_DIR)/main.o $(C_FLAGS)
$(OBJ_DIR)/parser.o: parser.c parser.h
	gcc -c parser.c -o $(OBJ_DIR)/parser.o $(C_FLAGS)
$(OBJ_DIR)/util.o: util.c util.h
	gcc -c util.c -o $(OBJ_DIR)/util.o $(C_FLAGS)
$(OBJ_DIR)/history.o: history.c history.h
	gcc -c history.c -o $(OBJ_DIR)/history.o $(C_FLAGS)
$(OBJ_DIR)/process.o: process.c process.h
	gcc -c process.c -o $(OBJ_DIR)/process.o $(C_FLAGS)
$(OBJ_DIR)/autoComplete.o: autoComplete.c autoComplete.h
	gcc -c autoComplete.c -o $(OBJ_DIR)/autoComplete.o $(C_FLAGS)
$(OBJ_DIR)/termInput.o: termInput.c termInput.h
	gcc -c termInput.c -o $(OBJ_DIR)/termInput.o $(C_FLAGS)
run:
	./$(EXEC)
clean:
	rm -rf obj/*.o
